<template>
  <!-- 初始化ECharts容器，ref属性用于获取标签 -->
  <div ref="charts" style="width: 100%; height: 100%"></div>
</template>

<script>
// 导入 ECharts
import * as echarts from 'echarts'

export default {
  name: 'ECharts',
  data() {
    return {
      items: [] // 存储后端返回的动态数据
    }
  },
  mounted() {
    // this.initWebsocket()
    this.initChart()
  },
  methods: {
    // 初始化图表
    initChart() {
      // 基于准备好的dom，初始化echarts实例
      var myChart = echarts.init(this.$refs.charts)

      // 指定图表的配置项和数据
      var option = {
        // 标题
        // title: { text: '入门示例' },
        // 图柱颜色
        color: '#fbc321',
        // 图例
        // legend: { data: ['销量'] },
        xAxis: {
          data: ['一月', '二月', '雪纺衫', '裤子', '高跟鞋', '袜子'],
          // 配置x轴文字的颜色
          axisLine: {
            lineStyle: {
              color: '#fff'
            }
          },
          // 解决 x轴 名称显示不全的问题
          axisLabel: {
            interval: 0
          }
        },
        yAxis: {
          // 配置y轴文字的颜色
          axisLine: {
            lineStyle: {
              color: '#fff'
            }
          }
        },
        series: [
          {
            name: '销量',
            type: 'bar',
            // data: this.items || [10, 20, 30, 40, 50, 60]
            data: [10, 20, 30, 40, 50, 60]
          }
        ],
        // 配置图标在容器中的位置
        grid: {
          top: '10%',
          left: '5%',
          right: '5%',
          bottom: '5%',
          containLabel: true // 此属性设置为 true 才会有效果
        }
      }

      myChart.setOption(option)
    },

    // websocket获取实时数据
    initWebsocket() {
      const ws = new WebSocket('ws://127.0.0.1:8090')
      // 接收消息触发
      ws.onmessage = (data) => {
        // 注意1：data.data里面的存储的数据是 字符串 形式的，需要转化为对象
        let msg = JSON.parse(data.data)
        this.items = msg.message
        // 注意2：此时的初始化方法就不要放在生命周期里面了，异步会使得先初始化数据，在发送websocket请求
        // this.initChart()
      }
    }
  }
}
</script>
